// 封装工具库
import { ElNotification, ElMessageBox } from 'element-plus'
import nProgress from 'nprogress'

/**
 * 右上角消息提示
 * **/
export function toast (message, type = 'success', dangerouslyUseHTMLString = false) {
  ElNotification({
    message,
    type,
    dangerouslyUseHTMLString,
    duration: 3000
  })
}

/**
 *弹出消息提示框
 * ***/
export function showModal (content = '提示内容', type = 'warning', title = '') {
  return ElMessageBox.confirm(
    content,
    title,
    {
      confirmButtonText: '确认',
      cancelButtonText: '取消',
      type
    }
  )
}

/**
 * 显示全屏loading
 * **/
export function showFullLoading () {
  nProgress.start()
}
/**
 * 隐藏全屏loading
 * **/
export function hideFullLoading () {
  nProgress.done()
}

/***
 * 弹出输入框
 * **/
export function showPrompt(tip, value="") {
  return ElMessageBox.prompt(tip, {
    confirmButtonText: '确认',
    cancelButtonText: '取消',
    inputValue: value
  })
}

/**
 * 将query对象转成url参数
 * **/
export function queryParams(query) {
  const q =[]
  for (const key in query) {
    if (query[key]) {
      q.push(`${key}=${encodeURIComponent(query[key])}`)
    }
  }
  let r = q.join('&') // limit=10&keyword=ceshi
  r=r?("?"+r):""
  return r
}
// 上移
export function useArrayMoveUp(arr, index) {
  swapArray(arr, index, index - 1)
}

// 下移
export function useArrayMoveDown(arr, index) {
  swapArray(arr, index, index + 1)
}

function swapArray(arr, index1, index2) {
  arr[index1] = arr.splice(index2, 1, arr[index1])[0]
  return arr
}
// sku排列算法
export function cartesianProductOf() {
  return Array.prototype.reduce.call(arguments, function (a, b) {
      const ret = [];
      a.forEach(function (a) {
          b.forEach(function (b) {
              ret.push(a.concat([b]));
          });
      });
      return ret;
  }, [
      []
  ]);
}
